The invention relates to the field of computer systems. More particularly, the invention relates to the inter-relationship of processes of a computer system.
Due to the complexity of modern computer systems, it may be necessary to predict, measure, and/or monitor the health of a computer system. Performance metrics are therefore typically used to measure the health of computer systems. These performance metrics can include measurements of such as CPU usage/availability, memory usage, free space or response time. The performance metrics may be collected from a large number of devices within a computer system and then used to measure the overall health of the system.
Performance metrics relating to the operation of database systems and application servers, physical hardware network performance, etc., may all need to be monitored across networks that may include many computers (each executing numerous processes) so that problems can be detected (preferably before they arise).
It will therefore be appreciated that a computer system may have a seemingly endless range of performance metrics, and the performance metrics are not necessarily measured in a common scale or range.
Due to the complexity and potential number of performance metrics involved, it can be useful to only focus attention on a particular performance metric, so that an operator or the system does not become overwhelmed. However, it will be appreciated that a performance metric provides an indication of a value resulting from the (potentially large) number of processes being executed in the computer system. It does not provide an indication of which processes are contributing to the resultant value and by how much, for example. In other words, from monitoring a performance metrics, it may not be clear which processes interact to provide a single service or application that may have an impact on the value of the performance metric. Each application may execute many processes in a computer system, and it may not be clear which of them interact with each other without detailed knowledge of the application code for example.
Existing system monitoring products can use invasive monitoring to track transactions across multiple applications. However, use of such known monitoring products requires user application code to be instrumented to identify data which can be used to track transactions.